package com.i2works.smartluolong.web.service.company;

import com.i2works.smartluolong.utils.basecommon.BaseCommonService;
import com.i2works.smartluolong.utils.exception.ServiceException;
import com.i2works.smartluolong.web.entity.company.CompanyApplyDO;
import com.i2works.smartluolong.web.entity.company.CompanyApplyMemberDO;
import com.i2works.smartluolong.web.entity.company.CompanyApplyMemberQuery;
import com.i2works.smartluolong.web.entity.user.UserAccountDO;

import java.util.List;
import java.util.Set;

/**
 * 工商申请 - 公司成员业务层接口
 *
 * @author Liu Yutao <koal@vip.qq.com>
 * @date 2018/3/14 17:31
 */

public interface ICompanyApplyMemberService extends BaseCommonService<CompanyApplyMemberQuery, CompanyApplyMemberDO> {
    /**
     * 后台查询股东信息（返回股东身份）
     */
    List<CompanyApplyMemberDO> queryShareHolderList(CompanyApplyMemberQuery query) throws ServiceException;

    /**
     * 根据applyId + user.role 删除股东信息
     */
    void deleteShareholderByRole(CompanyApplyMemberQuery query) throws ServiceException;

    /**
     * 删除（根据applyId,角色，身份）
     */
    void deleteByItemParam(CompanyApplyMemberQuery query) throws ServiceException;

    /**
     * 保存人员（根据姓名、证件号、申请ID、身份ID来判断当前人是否存在，存在就更新，不存在就新增）
     *
     * @param companyApplyMemberDO 人员实体
     * @param companyApply         工商信息实体
     * @param isLast               是否最后一步
     */
    void saveMember(CompanyApplyMemberDO companyApplyMemberDO, CompanyApplyDO companyApply, Boolean isLast) throws ServiceException;

    /**
     * 后台查询股东/法人/代办人信息
     *
     * @param query    查询参数
     * @param distinct 是否去重
     */
    List<CompanyApplyMemberDO> queryComplementMemberList(CompanyApplyMemberQuery query) throws ServiceException;

    /**
     * 后台查询董事、监事、经理信息
     *
     * @param query    查询参数
     * @param distinct 是否去重
     */
    @Deprecated
    List<CompanyApplyMemberDO> querySupervisorMemberList(CompanyApplyMemberQuery query) throws ServiceException;


    /**
     * 查询短信通知人的电话列表（法人和代办人）
     */
    Set<String> querySmsList(CompanyApplyMemberQuery query) throws ServiceException;


    /**
     * 手机端更新股东、法人、代办人自拍
     */
    void updateSupplement(List<CompanyApplyMemberDO> memeberList, UserAccountDO userAccount) throws ServiceException;

}
